home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 27 / CU Amiga Magazine's Super CD-ROM 27 (1998)(EMAP Images)(GB)[!][issue 1998-10].iso / CUCD / PowerPC / vbcc / Examples / mixedbinary / m68kcall.s < prev    next >
Text File  |  1998-08-02  |  750b  |  44 lines

  1.     .file    "m68kcall.s"
  2.     .extern    _PowerPCBase
  3.  
  4.     .text
  5.  
  6.     .align    3
  7.     .globl    _m68k
  8. _m68k:
  9. # r3 pointer to M68k function
  10. # 28(r1) ... M68k arguments on stack
  11. # -> r3 return code of M68k function
  12.     mflr    r0
  13.     stw    r0,8(r1)
  14.     stwu    r1,-32(r1)
  15.     stw    r31,24(r1)
  16.     lwz    r31,@_ppcargs(r2)
  17.     stw    r3,0(r31)        # PP_Code
  18.     la    r4,32+28-24(r1)
  19.     stw    r4,12(r31)        # PP_Stack-24
  20.     lwz    r3,32(r1)
  21.     mr    r4,r31
  22.     sub    r3,r3,r1
  23.     subi    r3,r3,32+28
  24.     stw    r3,16(r4)        # PP_StackSize = FrameSize-28
  25.     lwz    r3,_PowerPCBase(r2)
  26.     lwz    r0,-298(r3)
  27.     mtlr    r0
  28.     blrl                # Run68k
  29.     mr    r3,r31
  30.     lwz    r31,24(r1)
  31.     addi    r1,r1,32
  32.     lwz    r0,8(r1)
  33.     lwz    r3,20(r3)        # return M68k d0 register
  34.     mtlr    r0
  35.     blr
  36.     .type    _m68k,@function
  37.     .size    _m68k,$-_m68k
  38.  
  39.  
  40.     .tocd
  41. @_ppcargs:
  42.     .long    ppcargs
  43.     .bss    ppcargs,144        # sizeof(struct PPCArgs)
  44.